namespace System.Transactions.Abstractions
{
    public interface ISinglePhaseEnlistment
            : IEnlistment
    {
        // Summary:
        //     Represents a callback that is used to indicate to the transaction manager
        //     that the transaction should be rolled back.
        void Aborted();

        //
        // Summary:
        //     Represents a callback that is used to indicate to the transaction manager
        //     that the transaction should be rolled back, and provides an explanation.
        //
        // Parameters:
        //   e:
        //     An explanation of why a rollback is initiated.
        void Aborted(Exception e);

        //
        // Summary:
        //     Represents a callback that is used to indicate to the transaction manager
        //     that the SinglePhaseCommit was successful.
        void Committed();

        //
        // Summary:
        //     Represents a callback that is used to indicate to the transaction manager
        //     that the status of the transaction is in doubt.
        void InDoubt();

        //
        // Summary:
        //     Represents a callback that is used to indicate to the transaction manager
        //     that the status of the transaction is in doubt, and provides an explanation.
        //
        // Parameters:
        //   e:
        //     An explanation of why the transaction is in doubt.
        void InDoubt(Exception e);
    }
}
